home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 January / enter-2004-01.iso / files / maxima-5.9.0.exe / {app} / share / maxima / 5.9.0 / src / elim.lisp < prev    next >
Encoding:
Text File  |  2003-02-09  |  2.7 KB  |  86 lines

  1. ;;; -*-  Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
  2. ;;;Translated on: 5/12/85 13:46:23;;Maxima System version 8
  3. ;;** Variable settings were **
  4.  
  5. (in-package "MAXIMA")
  6.  
  7. ;;TRANSCOMPILE:FALSE;
  8. ;;TR_SEMICOMPILE:FALSE;
  9. ;;TRANSLATE_FAST_ARRAYS:TRUE;
  10. ;;TR_WARN_UNDECLARED:COMPILE;
  11. ;;TR_WARN_MEVAL:COMPFILE;
  12. ;;TR_WARN_FEXPR:COMPFILE;
  13. ;;TR_WARN_MODE:ALL;
  14. ;;TR_WARN_UNDEFINED_VARIABLE:ALL;
  15. ;;TR_FUNCTION_CALL_DEFAULT:GENERAL;
  16. ;;TR_ARRAY_AS_REF:TRUE;
  17. ;;TR_NUMER:FALSE;
  18. ;;DEFINE_VARIABLE:FALSE;
  19. (EVAL-WHEN (COMPILE EVAL LOAD)
  20.  (DEFPROP $ELIMINATE T TRANSLATED)
  21.  (ADD2LNC '$ELIMINATE $PROPS)
  22.  (DEFMTRFUN
  23.   ($ELIMINATE $ANY MDEFINE NIL NIL)
  24.   ($EQNS $VARS)
  25.   NIL
  26.   ((LAMBDA
  27.     ($TEQNS $SV $SE $L $FLAG $DISPFLAG)
  28.     NIL
  29.     NIL
  30.     (SETQ $FLAG (SETQ $DISPFLAG NIL))
  31.     (COND ((NOT (AND ($LISTP $EQNS)
  32.                      ($LISTP $VARS)))
  33.            (SIMPLIFY ($ERROR '|&THE ARGUMENTS MUST BOTH BE LISTS|))))
  34.     (COND ((> ($LENGTH $VARS)
  35.               (SETQ $L ($LENGTH $EQNS)))
  36.            (SIMPLIFY ($ERROR '|&MORE VARIABLES THEN EQUATIONS|))))
  37.     (COND ((EQL $L 1)
  38.            (SIMPLIFY ($ERROR '|&CAN'T ELIMINATE FROM ONLY ONE EQUATION|))))
  39.     (COND ((EQL ($LENGTH $VARS) $L)
  40.            (SETQ $VARS ($REVERSE $VARS))
  41.            (SETQ $SV (MAREF $VARS 1))
  42.            (SETQ $VARS ($REVERSE (SIMPLIFY ($REST $VARS))))
  43.            (SETQ $FLAG T)))
  44.     (SETQ $EQNS (SIMPLIFY (MAP1 (GETOPR 'MEQHK) $EQNS)))
  45.     (DO (($V)
  46.          (MDO (CDR $VARS) (CDR MDO)))
  47.         ((NULL MDO) '$DONE)
  48.       (SETQ $V (CAR MDO))
  49.       (SETQ $TEQNS '((MLIST)))
  50.       (DO (($J 1 (f+ 1 $J)))
  51.           ((OR (> $J $L)
  52.                (NOT ($FREEOF $V (SIMPLIFY ($FIRST $EQNS)))))
  53.            '$DONE)
  54.        (SETQ $TEQNS ($CONS (SIMPLIFY ($FIRST $EQNS)) $TEQNS))
  55.        (SETQ $EQNS (SIMPLIFY ($REST $EQNS))))
  56.       (COND ((LIKE $EQNS '((MLIST)))
  57.              (SETQ $EQNS $TEQNS))
  58.             (T
  59.              (SETQ $TEQNS ($APPEND $TEQNS (SIMPLIFY ($REST $EQNS))))
  60.              (SETQ $EQNS (SIMPLIFY ($FIRST $EQNS)))
  61.              (SETQ $L (ADD* $L -1))
  62.              (SETQ $SE '((MLIST)))
  63.              (DO (($J 1 (f+ 1 $J)))
  64.                  ((> $J $L) '$DONE)
  65.                (SETQ $SE ($CONS (SIMPLIFY ($RESULTANT $EQNS
  66.                                                       (MAREF $TEQNS $J)
  67.                                                       $V))
  68.                                 $SE)))
  69.              (SETQ $EQNS $SE))))
  70.     (COND
  71.      ($FLAG
  72.       (LIST
  73.        '(MLIST)
  74.        ($RHS
  75.         (SIMPLIFY
  76.          (MFUNCALL '$EV
  77.                    (SIMPLIFY ($LAST (SIMPLIFY ($SOLVE (MAREF $EQNS 1)
  78.                                                       $SV))))
  79.                    '$EVAL)))))
  80.      (T $EQNS)))
  81.    '$TEQNS
  82.    '$SV
  83.    '$SE
  84.    '$L
  85.    '$FLAG
  86.    '$DISPFLAG)))